<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //slice() 方法返回一个新的数组对象，这一对象是一个由 begin 和 end 决定的原数组的浅拷贝（包括 begin，不包括end）。原始数组不会被改变。

      const animals = ['ant', 'bison', 'camel', 'duck', 'elephant']
      console.log(animals.slice(2))

      console.log(animals.slice(2, 4))

      console.log(animals.slice(1, 5))

      //参数：begin：提取起始处的索引（从 0 开始），从该索引开始提取原数组元素。
      //end：提取终止处的索引（从 0 开始），在该索引处结束提取原数组元素。slice 会提取原数组中索引从 begin 到 end 的所有元素（包含 begin，但不包含 end）

      let fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
      let citrus = fruits.slice(1, 3)
      console.log(citrus)

      //在下例中, slice 从 myCar 中创建了一个新数组newCar。两个数组都包含了一个 myHonda 对象的引用。当 myHonda 的 color 属性改变为 purple，则两个数组中的对应元素都会随之改变。
      let myHonda = {
        color: 'red',
        wheels: 4,
        engine: { cylinders: 4, size: 2.2 },
      }
      let myCar = [myHonda, 2, 'cherry condition', 'purchased 1997']
      let newCar = myCar.slice(0, 2)

      console.log('myCar=' + JSON.stringify(myCar))
      console.log('newCar=' + JSON.stringify(newCar))
      console.log('myCar[0].color=' + JSON.stringify(myCar[0].color))
      console.log('newCar[0].color=' + JSON.stringify(newCar[0].color))

      myHonda.color = 'purple'
      console.log('The new color of my Honda is' + myHonda.color)

      console.log('myCar[0].color' + myCar[0].color)
      console.log('newCar[0].color' + newCar[0].color)
    </script>
  </body>
</html>
